/*
 * Copyright (C) 2000-2004 Technical University of Ilmenau, Germany
 *                         Department of Electronic Circuits & Systems
 *
 * You may only use this file according to the terms of the license agreement included
 * within the file LICENSE which is distributed together with the software package.
 *
 * CVS Info:
 * $Author: rummler $
 * $Date: 2004/03/10 20:19:51 $
 * $Revision: 1.1.2.1 $
 * $State: Exp $
 * $RCSfile: TrivialEvaluator.java,v $
 *
 */
package elka.isi.operator;

import org.evolvica.core.*;
import org.evolvica.core.eval.AbstractEvaluator;
import org.evolvica.core.eval.IntegerScore;

import elka.isi.gene.*;
import elka.isi.individual.*;

/** Trivial evaluator example.
 *
 * @author Andreas Rummler
 * @since 0.4.0
 * @version $Revision: 1.1.2.1 $ $Date: 2004/03/10 20:19:51 $
 */
public class RWEvaluator extends AbstractEvaluator {
	
	/**
	 * @see org.evolvica.core.eval.AbstractEvaluator#evaluate(org.evolvica.core.IIndividual)
	 */
	public void evaluate( IIndividual ind ) {
	
		if (ind instanceof RabbitIndividual) {
			RabbitIndividual rabbit = (RabbitIndividual) ind;
			RabbitGene gene = (RabbitGene) ind.getGenotype();
			
//			TODO: tu nastepuje implementacja ewaluacji parametrow.
//			W modelu 1.0 ewaluacja to przepisanie parametrow na score,
//			pozniej mozna je obliczac w zaleznosci od roznych parametrow.
//			Nalezy wywolac metode setScore dla wszystkich mozliwych score
//			danego gatunku!
			int harvest = gene.getGene(RabbitGene.HARVEST_GENE);
			int hunt = gene.getGene(RabbitGene.HUNT_GENE);
			rabbit.setHarvestingScore(new IntegerScore(harvest));
			rabbit.setHuntingScore(new IntegerScore(hunt));
			rabbit.setScore(new IntegerScore(hunt + harvest));
		}
		else if (ind instanceof WolfIndividual) {
			WolfIndividual wolf = (WolfIndividual) ind;
			WolfGene gene = (WolfGene) ind.getGenotype();
			
//			TODO: tu nastepuje implementacja ewaluacji parametrow.
//			W modelu 1.0 ewaluacja to przepisanie parametrow na score,
//			pozniej mozna je obliczac w zaleznosci od roznych parametrow.
//			Nalezy wywolac metode setScore dla wszystkich mozliwych score
//			danego gatunku!
			int hunt = gene.getGene(WolfGene.HUNT_GENE);
			wolf.setHuntingScore(new IntegerScore(hunt));
			wolf.setScore(new IntegerScore(hunt));
		}
		
		
	}
	
}
